package game;

/**
 * 汉诺塔问题
 */
public class HanoiTower {
    public static void main(String[] args) {
        new HanoiTower().move(3,'A','B','C');
    }

    /**
     * 汉诺塔移动方法
     * @param num 要移动几个盘子
     * @param a   移动的起始柱子
     * @param b   移动的借助柱子
     * @param c   移动的目标柱子
     */
    public void move(int num, char a , char b , char c){
        if(num == 1){
            System.out.println("将盘子从"+a+"移动到"+c);
        }else{
            System.out.println("=====递归开始=====");
            //将n-1个盘子从a借助c移动到b
            move(num-1,a,c,b);
            //将1个盘子从a移动到c
            System.out.println("将盘子从"+a+"移动到"+c);
            //将n-1个盘子从b借助c移动到a
            move(num-1,b,a,c);
            System.out.println("=====递归结束=====");
        }

    }

}
